/*
* Vista de la barra menu
*/
package sudoku.Vista;
import java.util.Observable;
import java.util.Observer;
import javax.swing.*;
import javax.swing.JPopupMenu.Separator;
import sudoku.Controlador.SudokuControlador;
import sudoku.Modelo.Juego;
/**
*
* @author User
*/
public class BarraMenu extends JMenuBar implements Observer{
//private final JMenuBar jmbBarraMenu;
private final JMenu jmJuego,jmDificultad,jmTop10, jmExtras;
private final JMenuItem jmiNuevo,jmiChequear,jmiGuardar, jmiAbrir, jmiResolver;
private final JMenuItem jmiTop10Facil,jmiTop10Medio,jmiTop10Dificil;
private final JMenuItem jmiOtraVista,jmiOtrosSudokus,jmiRegla,jmiAcercaDe;
private final Separator jsSeparador1, jsSeparador2;
private final JCheckBoxMenuItem jcbmiAyuda ;
private final JCheckBoxMenuItem jcbmiFacil,jcbmiMedio,jcbmiDificil;
/**
*
* Constructor Barra MEnu
*/
public BarraMenu(){
super();
//menJuego
jmJuego = new JMenu("Juego");
jmiNuevo = new JMenuItem("Nuevo");
jmiGuardar = new JMenuItem("Guardar");
jmiAbrir = new JMenuItem("Abrir");
jsSeparador1 = new Separator();
jmiChequear = new JMenuItem("Chequear");
jcbmiAyuda = new JCheckBoxMenuItem("Ayuda",false);
jmiResolver = new JMenuItem("Resolver");
jsSeparador2 = new Separator();
jmTop10 = new JMenu("Top 10");
jmiTop10Facil = new JMenuItem("Top 10 Facil");
jmiTop10Medio = new JMenuItem("Top 10 Medio");
jmiTop10Dificil = new JMenuItem("Top 10 Dificil");
jmiNuevo.setAccelerator(KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_N, java.awt.event.InputEvent.CTRL_MASK));
jmiGuardar.setAccelerator(KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_G, java.awt.event.InputEvent.CTRL_MASK));
jmiAbrir.setAccelerator(KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_A, java.awt.event.InputEvent.CTRL_MASK));
jmiChequear.setAccelerator(KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_C, java.awt.event.InputEvent.CTRL_MASK));
jmJuego.add(jmiNuevo);
jmJuego.add(jmiGuardar);
jmJuego.add(jmiAbrir);
jmJuego.add(jsSeparador1);
jmJuego.add(jmiChequear);
jmJuego.add(jcbmiAyuda);
jmJuego.add(jmiResolver);
jmJuego.add(jsSeparador2);
jmJuego.add(jmTop10);
jmTop10.add(jmiTop10Facil);
jmTop10.add(jmiTop10Medio);
jmTop10.add(jmiTop10Dificil);
this.add(jmJuego);
//Menu Dificultad.
jmDificultad = new JMenu("Dificultad");
jcbmiFacil = new JCheckBoxMenuItem("Facil",true);
jcbmiMedio = new JCheckBoxMenuItem("Medio");
jcbmiDificil = new JCheckBoxMenuItem("Dificil");
jmDificultad.add(jcbmiFacil);
jmDificultad.add(jcbmiMedio);
jmDificultad.add(jcbmiDificil);
this.add(jmDificultad);
//Menu Extras.
jmExtras = new JMenu("Extras");
jmiOtraVista = new JMenuItem("Cambiar de Vista");
jmiOtrosSudokus = new JMenuItem("Otros Sudokus");
jmiRegla = new JMenuItem("Regla");
jmiAcercaDe = new JMenuItem("Acerca De");
jmExtras.add(jmiOtraVista);
jmExtras.add(jmiOtrosSudokus);
jmExtras.add(jmiRegla);
jmExtras.add(jmiAcercaDe);
this.add(jmExtras);
}
/**
* Metodo llamado cuando el modelo envia notificaciones de actualizacion.
*
* @param o El modelo.
* @param arg La accion.
*/
public void update(Observable o, Object arg) {
switch ((String)arg) {
case "Nuevo": this.jmiOtraVista.setEnabled(true);
case "Dificultad": setDificultad((Juego) o); break;
case "Solucionar": this.jmiOtraVista.setEnabled(false); break;
}
}
/**
* Setea el la seleccion de dificultad, en la barra menu, dependeindo del jeugo dado.
*
* @param juego Juego a consultar la dificultad.
*/
public void setDificultad(Juego juego){
jcbmiFacil.setSelected(false);
jcbmiMedio.setSelected(false);
jcbmiDificil.setSelected(false);
int difJ = juego.getDificultad();
switch (difJ){
case 1: jcbmiFacil.setSelected(true);break;
case 2: jcbmiMedio.setSelected(true);break;
case 3: jcbmiDificil.setSelected(true);break;
}
}
/**
* Agrega controles a todos los componentes.
*
* @param botonControlador Controller which controls all user actions.
*/
public void setController(SudokuControlador botonControlador) {
//jmJuego.addActionListener(botonControlador);
jmiNuevo.addActionListener(botonControlador);
jmiChequear.addActionListener(botonControlador);
jmiGuardar.addActionListener(botonControlador);
jmiAbrir.addActionListener(botonControlador);
jmiChequear.addActionListener(botonControlador);
jcbmiAyuda.addActionListener(botonControlador);
jmiResolver.addActionListener(botonControlador);
jmiTop10Facil.addActionListener(botonControlador);
jmiTop10Medio.addActionListener(botonControlador);
jmiTop10Dificil.addActionListener(botonControlador);
jcbmiFacil.addActionListener(botonControlador);
jcbmiDificil.addActionListener(botonControlador);
jcbmiMedio.addActionListener(botonControlador);
jmiOtraVista.addActionListener(botonControlador);
jmiOtrosSudokus.addActionListener(botonControlador);
jmiRegla.addActionListener(botonControlador);
jmiAcercaDe.addActionListener(botonControlador);
}
}